﻿using System;
using System.Data;
//using System.Data.OracleClient;
using System.Configuration;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
using System.Collections;
using System.Xml;

//using ESRI.ArcGIS.esriSystem;

/// <summary>
/// Utility 的摘要说明
/// </summary>
public class Utility
{

	public Utility()
	{
		//
		// TODO: 在此处添加构造函数逻辑
		//
	}


    /// <summary>
    /// 将 成果ID 转化为对应的 成果类型名称
    /// </summary>
    /// <param name="strProductId">成果类型的ID顺序号（在html页面中编码）</param>
    /// <returns>成果类型的名称，也就是数据库中的表名称</returns>
    public static string ProductId2Name(string strProductId)
    {
        Hashtable hashTable = new Hashtable();
        hashTable.Add("1", "驾驶员信息");
        hashTable.Add("2", "农机基本信息");
        hashTable.Add("3", "农具基本信息");
        hashTable.Add("4", "农具种类");
        hashTable.Add("5", "作业种类");
        //hashTable.Add("6", "专著");
        //hashTable.Add("7", "书籍章节");
        //hashTable.Add("8", "学位论文");
        //hashTable.Add("9", "其他");


        foreach (DictionaryEntry de in hashTable)
        {
            if ((string)de.Key == strProductId)
                return (string)de.Value;
        }

        // 默认返回值
        return "农机基本信息";
    }


    ///// <summary>
    ///// 将成果的英文名称转换为中文名称
    ///// </summary>
    ///// <param name="strProductNameEN">成果的英文名称</param>
    ///// <returns>成果的中文名称</returns>
    //public static string ProductNameEN2NameCN(string strProductNameEN)
    //{
    //    Hashtable hashTable = new Hashtable();
    //    hashTable.Add("Journal", "期刊论文");
    //    hashTable.Add("Meeting", "会议论文");
    //    hashTable.Add("Patent", "专利");
    //    hashTable.Add("Software", "软件著作权");
    //    hashTable.Add("Reward", "奖励");
    //    hashTable.Add("Book", "专著");
    //    hashTable.Add("Chapter", "书籍章节");
    //    hashTable.Add("Thesis", "学位论文");
    //    hashTable.Add("Other", "其他");


    //    foreach (DictionaryEntry de in hashTable)
    //    {
    //        if ((string)de.Key == strProductNameEN)
    //            return (string)de.Value;
    //    }

    //    // 默认返回值
    //    return "期刊论文";
    //}


    //public static string SearchColumnEN2CN(string strColumnEN)
    //{
    //    Hashtable hashTable = new Hashtable();
    //    hashTable.Add("AuthorNameCN", "中文作者名");
    //    hashTable.Add("AuthorNameEN", "英文作者名");
    //    hashTable.Add("StartYear", "开始年份");
    //    hashTable.Add("EndYear", "结束年份");
    //    hashTable.Add("FundNumber", "项目资助");
    //    //hashTable.Add("Book", "专著");
    //    //hashTable.Add("Chapter", "书籍章节");
    //    //hashTable.Add("Thesis", "学位论文");
    //    //hashTable.Add("Other", "其他");


    //    foreach (DictionaryEntry de in hashTable)
    //    {
    //        if ((string)de.Key == strColumnEN)
    //            return (string)de.Value;
    //    }

    //    // 默认返回值
    //    return "中文作者名";    
    //}

    public static string ReplaceXMLESC(string strInputXML)
    {

        strInputXML = strInputXML.Replace("<", "&lt;");
        strInputXML = strInputXML.Replace(">", "&gt;");
        strInputXML = strInputXML.Replace("&", "&amp;");
        strInputXML = strInputXML.Replace("\"", "&quot;");
        strInputXML = strInputXML.Replace("'", "&apos;");

        return strInputXML;
    }

    public static string InitChineseUrl(Uri url)
    {
        //Uri url = new Uri(chineseUrl);
        System.Collections.Specialized.NameValueCollection nv = System.Web.HttpUtility.ParseQueryString(url.Query, System.Text.Encoding.GetEncoding("utf-8"));
        string query = "";
        for (int i = 0; i < nv.Count; i++)
        {
            if (query.Trim() == string.Empty)
            {
                query = "?" + nv.Keys[i] + "=" + HttpUtility.UrlEncode(nv[i], System.Text.Encoding.GetEncoding("GB2312"));
            }
            else
            {
                query += "&" + nv.Keys[i] + "=" + HttpUtility.UrlEncode(nv[i], System.Text.Encoding.GetEncoding("GB2312"));
            }
        }
        string u = url.OriginalString.Split('?')[0] + query;
        return u;
    } 



            //    <option id ="AuthorNameCN" value ="AuthorNameCN" selected ="selected">中文作者名</option>
            //<option id ="AuthorNameEN" value ="AuthorNameEN" >外文作者名</option>
            //<option id ="StartYear" value ="StartYear" >开始年份</option>
            //<option id ="EndYear" value ="EndYear" >结束年份</option>
            //<!--<option id ="JournalClass" value ="期刊级别" >期刊级别</option>-->
            //<option id ="FundNumber" value ="FundNumber" >基金编号</option>

    //public static string AgriCode2Name(string AgriCode)
    //{
    //    Hashtable hashTable = new Hashtable();
    //    hashTable.Add("LAI", "叶面积指数");
    //    hashTable.Add("PLANTGDW", "生物量(g/cm2)");
    //    hashTable.Add("YEILD", "单产(Kg)");
    //    hashTable.Add("CHL_AB", "叶绿素总含量(g/cm2)");
    //    hashTable.Add("NCL", "叶片含氮量(g/cm2)");
    //    hashTable.Add("CRUDEPP", "蛋白质含量(%)");
    //    hashTable.Add("WETGP", "湿面筋含量(%)");
    //    hashTable.Add("MOISTURE", "含水量(%)");
    //    hashTable.Add("STARCH", "淀粉含量(%)");
    //    hashTable.Add("DI", "病虫害指数");
    //    hashTable.Add("SoilWater", "土壤含水量(%)");
    //    hashTable.Add("GPC", "蛋白质含量(%)");
    //    hashTable.Add("GPW", "蛋白质累积量");
    //    hashTable.Add("GNC", "氮素含量(%)");
    //    hashTable.Add("GNW", "氮素累积量");

    //    foreach (DictionaryEntry de in hashTable)
    //    {
    //        if ((string)de.Key == AgriCode)
    //            return (string)de.Value;
    //    }

    //    // 默认返回空值
    //    return "";


    //}


    //public static string DistID2Name(int distid)
    //{
    //    string distname = "";
    //    string sqlstring = "select * from china_district where distid = " + distid;
    //    OracleDataReader reader = OracleDataBase.ExecuteReader(sqlstring);
    //    while (reader.Read())
    //    {
    //        distname = reader["DISTNAME"].ToString();
    //    }
    //    return distname;

    //}

    ///// <summary>
    ///// 根据模块英文名称查中文名称
    ///// </summary>
    ///// <param name="ModuleCode"></param>
    ///// <returns></returns>
    //public static string ModuleCode2Name(string ModuleCode)
    //{
    //    Hashtable hashTable = new Hashtable();
    //    hashTable.Add("GrowingStatus", "长势监测");
    //    hashTable.Add("RsYield", "遥感估产");
    //    hashTable.Add("AgriYield", "农气估产");
    //    hashTable.Add("QualityRsForcast", "品质遥感趋势预报");
    //    hashTable.Add("QualityAgriForcast", "品质农学模型预报");
    //    hashTable.Add("QualityRsMonitor", "近红外品质精监测");
    //    hashTable.Add("DiseaseMonitor", "病虫害监测");
    //    hashTable.Add("DroughtyMonitor", "干旱监测");
    //    hashTable.Add("NutrientMonitor", "养分监测");
    //    hashTable.Add("MoistureMonitor", "水分监测");
    //    hashTable.Add("OptimalCultivate", "调优栽培技术");

    //    foreach (DictionaryEntry de in hashTable)
    //    {
    //        if ((string)de.Key == ModuleCode)
    //            return (string)de.Value;
    //    }

    //    // 默认返回空值
    //    return "";
    //}

    //public static string ModuleName2Code(string ModuleName)
    //{
    //    Hashtable hashTable = new Hashtable();
    //    hashTable.Add("GrowingStatus", "长势监测");
    //    hashTable.Add("RsYield", "遥感估产");
    //    hashTable.Add("AgriYield", "农气估产");
    //    hashTable.Add("QualityRsForcast", "品质遥感趋势预报");
    //    hashTable.Add("QualityAgriForcast", "品质农学模型预报");
    //    hashTable.Add("QualityRsMonitor", "近红外品质精监测");
    //    hashTable.Add("DiseaseMonitor", "病虫害监测");
    //    hashTable.Add("DroughtyMonitor", "干旱监测");
    //    hashTable.Add("NutrientMonitor", "养分监测");
    //    hashTable.Add("MoistureMonitor", "水分监测");
    //    hashTable.Add("OptimalCultivate", "调优栽培技术");

    //    foreach (DictionaryEntry de in hashTable)
    //    {
    //        if ((string)de.Value == ModuleName)
    //            return (string)de.Key;
    //    }

    //    // 默认返回空值
    //    return "";
    //}



    ///// <summary>
    ///// 将地区编码 EID 转换成地区名称
    ///// </summary>
    ///// <param name="sEid">EID</param>
    ///// <param name="sTable">数据表名，确定是哪级行政单位</param>
    ///// <returns>地区名称</returns>
    //public string Eid2Name(string sEid, string sTable)
    //{
    //    string sName = "";
    //    OracleConnection oconn = DbConnection.GetOracleConnection();

    //    try
    //    {
    //        oconn.Open();
    //        OracleCommand ocmd = oconn.CreateCommand();
    //        ocmd.CommandText = "select * from " + sTable + " where CODE=\'" + sEid + "\'";
    //        ocmd.CommandType = CommandType.Text;
    //        OracleDataReader rdr = ocmd.ExecuteReader();
    //        while (rdr.Read())
    //        {
    //            sName = (string)rdr["NAME"];
    //        }
    //    }
    //    catch (OracleException e)
    //    {
    //        string t = e.StackTrace;
    //    }
    //    finally
    //    {
    //        oconn.Close();
    //    }

    //    return sName;
    //}

    ///// <summary>
    ///// 将字典 ID 转换成名称
    ///// </summary>
    ///// <param name="sEid">ID</param>
    ///// <param name="sTable">数据表名</param>
    ///// <returns>名称</returns>
    //public string Id2Name(string sId, string sTable)
    //{
    //    string sName = "";
    //    OracleConnection oconn = DbConnection.GetOracleConnection();

    //    try
    //    {
    //        oconn.Open();
    //        OracleCommand ocmd = oconn.CreateCommand();
    //        ocmd.CommandText = "select * from " + sTable + " where ID=\'" + sId + "\'";
    //        ocmd.CommandType = CommandType.Text;
    //        OracleDataReader rdr = ocmd.ExecuteReader();
    //        while (rdr.Read())
    //        {
    //            sName = (string)rdr["NAME"];
    //        }
    //    }
    //    catch (OracleException e)
    //    {
    //        string t = e.StackTrace;
    //    }
    //    finally
    //    {
    //        oconn.Close();
    //    }

    //    return sName;
    //}

    ///// <summary>
    ///// 在服务器响应的 ArcXML 文件中根据图层名查询图层 id
    ///// <remarks>
    ///// 暂时没有使用
    ///// </remarks>
    ///// </summary>
    ///// <param name="sResponse">服务器响应的 ArcXML 文件</param>
    ///// <param name="sLayerName">图层名</param>
    ///// <returns>图层 id</returns>
    //public string LayerName2Id(string sResponse, string sLayerName)
    //{
    //    string sLayerId = "";

    //    XmlDocument myDoc = new XmlDocument();
    //    myDoc.LoadXml(sResponse);
    //    XmlElement root = myDoc.DocumentElement;
    //    XmlNodeList myNodeList = root.GetElementsByTagName("LAYERINFO");

    //    for (int i = 0; i < myNodeList.Count; i++)
    //    {
    //        if (myNodeList[i].Attributes["name"].InnerXml.ToLower() == sLayerName.ToLower())
    //        {
    //            sLayerId = myNodeList[i].Attributes["id"].InnerXml;
    //            break;
    //        }
    //    }
    //    return sLayerId;
    //}

    static public string hexToRGB(string hex)
    {
        Hashtable hexTable = new Hashtable();
        hexTable.Add("0", "0");
        hexTable.Add("1", "1");
        hexTable.Add("2", "2");
        hexTable.Add("3", "3");
        hexTable.Add("4", "4");
        hexTable.Add("5", "5");
        hexTable.Add("6", "6");
        hexTable.Add("7", "7");
        hexTable.Add("8", "8");
        hexTable.Add("9", "9");
        hexTable.Add("a", "10");
        hexTable.Add("b", "11");
        hexTable.Add("c", "12");
        hexTable.Add("d", "13");
        hexTable.Add("e", "14");
        hexTable.Add("f", "15");
        hex = hex.ToLower();
        if (hex.StartsWith("#"))
            hex = hex.Remove(0, 1);


        string hexR = hex.Substring(0, 2);
        string hexG = hex.Substring(2, 2);
        string hexB = hex.Substring(4, 2);

        string rgbR = (Convert.ToInt32(hexTable[hexR.Substring(0, 1)]) * 16 + Convert.ToInt32(hexTable[hexR.Substring(1, 1)])).ToString();
        string rgbG = (Convert.ToInt32(hexTable[hexG.Substring(0, 1)]) * 16 + Convert.ToInt32(hexTable[hexG.Substring(1, 1)])).ToString();
        string rgbB = (Convert.ToInt32(hexTable[hexB.Substring(0, 1)]) * 16 + Convert.ToInt32(hexTable[hexB.Substring(1, 1)])).ToString();
        return rgbR + "," + rgbG + "," + rgbB;
    }



}
